package cn.jiyun.common.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
 * 通用结果封装类，用于API返回结果的统一格式化。
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
@ToString
public class CommonResult {
    // 成功状态码
    private static  final Integer SUCCESS_CODE = 1;
    // 错误状态码
    private static  final Integer ERROR_CODE = 0;
    // 默认成功消息
    private static  final String SUCCESS_MESSAGE = "success";
    // 默认错误消息
    private static  final String ERROR_MESSAGE = "error";

    // 状态码
    private  Integer code;
    // 消息
    private  String message;
    // 数据部分
    private  Object data;

    /**
     * 构造一个带有状态码和消息的结果对象。
     *
     * @param code 状态码
     * @param message 消息内容
     */
    public CommonResult(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 构造一个成功结果对象，包含数据。
     *
     * @param data 返回的数据
     * @return 包含成功标识和数据的CommonResult对象
     */
    public static CommonResult success(Object data) {
        return new CommonResult(SUCCESS_CODE,SUCCESS_MESSAGE,data);
    }
    public static CommonResult success(Integer code,String message,Object data) {
        return new CommonResult(code,message,data);
    }
    /**
     * 构造一个成功结果对象，包含自定义消息和数据。
     *
     * @param message 自定义成功消息
     * @param data 返回的数据
     * @return 包含自定义成功消息和数据的CommonResult对象
     */
    public static CommonResult success(String message,Object data) {
        return new CommonResult(SUCCESS_CODE,message,data);
    }

    /**
     * 构造一个成功结果对象，包含自定义消息。
     *
     * @param message 自定义成功消息
     * @return 包含自定义成功消息的CommonResult对象
     */
    public static CommonResult success(String message) {
        return new CommonResult(SUCCESS_CODE,message,null);
    }

    /**
     * 构造一个成功结果对象，使用默认成功消息。
     *
     * @return 包含默认成功消息的CommonResult对象
     */
    public static CommonResult success() {
        return new CommonResult(SUCCESS_CODE,SUCCESS_MESSAGE,null);
    }

    /**
     * 构造一个错误结果对象，包含自定义消息。
     *
     * @param message 自定义错误消息
     * @return 包含自定义错误消息的CommonResult对象
     */
    public static CommonResult error(String message) {
        return new CommonResult(ERROR_CODE,message,null);
    }

    /**
     * 构造一个错误结果对象，使用默认错误消息。
     *
     * @return 包含默认错误消息的CommonResult对象
     */
    public static CommonResult error() {
        return new CommonResult(ERROR_CODE,ERROR_MESSAGE,null);
    }

    /**
     * 构造一个错误结果对象，包含数据。
     *
     * @param data 返回的数据
     * @return 包含错误标识和数据的CommonResult对象
     */
    public static CommonResult error(Object data) {
        return new CommonResult(ERROR_CODE,ERROR_MESSAGE,data);
    }

    /**
     * 构造一个错误结果对象，包含自定义消息和数据。
     *
     * @param message 自定义错误消息
     * @param data 返回的数据
     * @return 包含自定义错误消息和数据的CommonResult对象
     */
    public static CommonResult error(String message,Object data) {
        return new CommonResult(ERROR_CODE,message,data);
    }
}

